package java.数据结构.array;
/**
 *
 * @program: MyArray
 * @description: 数组相关操作
 * @create: 2020-04-10 16:03
 **/
public class MyArray {

    public static void main(String[] args) {

    }
    /**
     * 获取数组中指定索引位置的元素值
     * @param a 数组对象
     * @param index 索引位置
     * @return 索引位置处的元素值
     */
    private int getArray(Array a,int index){
        return a.data[index];
    }
    /**
     * 更新数组指定索引位置的值
     *
     * @param a 数组对象
     * @param index 索引位置
     * @param value 新的值
     */
    private void updateArray(Array a,int index,int value){
        a.data[index] = value;
    }

    /**
     * 中间插入
     * @param a 数组对象
     * @param index 插入的位置
     * @param value 插入的元素
     */
    private void insert(Array a,int index, int value){
        if(index >a.size && index < 0){
            throw new RuntimeException("数组越界");
        }
        //如果是最后一个元素，则直接赋值
        if(index == a.size){
            a.data[index] = value;
        }else{
            //判断是否需要扩容
            if(a.size>=a.data.length){
                resize(a);
            }
            //循环将后面的元素往后移动一位
            for(int i = a.size-1;i>=index;i--){
                a.data[i+1] = a.data[i];
            }
            a.data[index] = value;
            a.size++;
        }
    }
    /**
     * 扩容
     * @param a 数组对象
     */
    private void resize(Array a) {
        int[] newData = new int[a.data.length*2];
       System.arraycopy(a.data,0,newData,0,a.data.length);
        a.data = newData;
    }


    class Array {
        private int size;
        private int[] data;

        public Array(int size) {
            this.size = size;
            data = new int[size];
        }
    }
}
